Current computer operating systems, such as UNIX, provide facilities for program interconnection which enable several programs to run concurrently rather than sequentially. (UNIX is a registered trademark of AT&T in the U.S.A. and other countries.) In UNIX, the facility which supports program interconnection is called a pipe.
The UNIX pipe facility, which is a service of the UNIX kernel, provides a one-way data path connecting two separate programs by sending the output of a first program to the input of a second program. In this manner, complex tasks are accomplished by combining programs in sequence.
While the ability to integrate programs via the UNIX pipe model is one of the reasons for the popularity of the UNIX operating system, there are several drawbacks which have restricted the ability of UNIX to support sophisticated software development environments in which several software tools are required to run concurrently. In particular, the UNIX pipe mechanism is a one-way, point-to-point, single computer communication facility. Software tools often need interactive, two-way communication. In certain situations, two or more software tools may require the same data from a single source. Furthermore, the UNIX pipe facility does not support a distributed processing environment in which different software tools are run on different computers on a network.
In order to connect tools together using pipes, the tools require interfaces that the other tools understand. This has meant a primitive command line interface for most of the UNIX utilities. Applications that have added an interactive, window-based interface have lost the ability to communicate with other UNIX tools via pipes.
In the UNIX model, the developer has many small tools which he must combine to accomplish a task. For increased productivity, the trend is toward task-oriented systems where the user concentrates on the task he is trying to accomplish and does not worry about the combination of tools required to achieve the task.
Message-based communication between software tools has been proposed. In one proposed system, request messages are sent from a software tool to a message server. The message server forwards the message to those tools that wish to receive a message of that type. While such systems are generally satisfactory, they lack features necessary for operation in a large, distributed, multi-tasking computer system.
In a system including multiple software tools, it can be difficult to insure that a tool is available to service every request message. While the user can invoke tools as necessary, it is desirable to relieve the user of this duty so that he can concentrate on application tasks rather than coordinating and managing the software tools.
It is a general object of the present invention to provide improved communication between programs or tools in a computer system including a plurality of concurrently-operating tools.
Another object of the present invention is to provide a program communication facility including an execution manager which ensures that a tool is available to service every request from another tool.
Yet another object of the invention is to provide methods and apparatus for automatically starting and running a tool when a tool is not available to service a request from another tool.
Still another object of the present invention is to provide a communication facility which improves communication and cooperation among software tools in a distributed computing environment.
A further object of the present invention is to provide a software development environment which facilitates the design, porting, construction and maintenance of computer programs.
It is another object of the present invention to provide a computer system, including a plurality of concurrently-operating tools, that is task-oriented, rather than tool-oriented.